import { defineStore } from "pinia";

import { useStorage } from "@vueuse/core";
// import { loginApi, logoutApi, getUserInfo } from "@/api/system";
import { resetRouter } from "@/router";
import { store } from "@/stores";

export const useUserStore = defineStore("user", () => {
  const user = {
    roles: [],
    perms: [],
  };

  const token = useStorage("accessToken", "");

  /**
   * 登录
   *
   * @returns
   * @param loginData
   */
  function login(loginData) {
    return new Promise((resolve, reject) => {
      resolve({});
      // loginApi(loginData)
      //   .then((response) => {
      //     const { tokenType, accessToken } = response.data;
      //     token.value = `${tokenType} ${accessToken}`; // Bearer eyJhbGciOiJIUzI1NiJ9.xxx.xxx
      //     resolve();
      //   })
      //   .catch((error) => {
      //     reject(error);
      //   });
    });
  }

  // 获取信息(用户昵称、头像、角色集合、权限集合)
  function getInfo() {
    return new Promise((resolve, reject) => {
      resolve({});
      // getUserInfo()
      //   .then(({ data }) => {
      //     if (!data) {
      //       reject("Verification failed, please Login again.");
      //       return;
      //     }
      //     if (!data.roles || data.roles.length <= 0) {
      //       reject("getUserInfo: roles must be a non-null array!");
      //       return;
      //     }
      //     Object.assign(user, { ...data });
      //     resolve(data);
      //   })
      //   .catch((error) => {
      //     reject(error);
      //   });
    });
  }

  // 注销
  function logout() {
    return new Promise((resolve, reject) => {
      resolve();

      // logoutApi()
      //   .then(() => {
      //     resetStore();
      //     window.location.reload(); // 清空路由
      //     resolve();
      //   })
      //   .catch((error) => {
      //     reject(error);
      //   });
    });
  }

  /** 清空缓存 */
  function resetStore() {
    resetRouter();
    token.value = "";
    Object.assign(user, { roles: [], perms: [] });
  }
  return {
    token,
    user,
    login,
    getInfo,
    logout,
    resetStore,
  };
});

// 非setup
export function useUserStoreHook() {
  return useUserStore(store);
}
